JSR220-ORM Plan
A Technology Project Proposal [updated June 21st 2005]
Introduction

The JSR220-ORM Project's goal is to provide tooling for an implementation of the JSR 220 persistence and JSR 243 specifications integrated with the Eclipse platform. Further, the goal of the project is to track the changes to these specifications, so that in addition, as they merge together towards a common persistence standard, appropriate tooling will be fully implemented by this project. The over arching goal of this project is to provide visual development tools that facilitate round trip engineering when using the JSR 220/243 approach to persistence.  Further, to provide an implementation that is extensible to accommodate new types of input and generate artifacts for alternative runtimes.

 

Dependencies

The JSR220-ORM Project is directly tied to the JSR 220 and 243 specifications. Further it will undoubtedly have dependencies on or provide dependencies to other sub projects within the Eclipse Data Tools Project and Web Tools Project . Additionally, elements of the project will depend on JDK 1.5 for annotation support required in JSR 220.

 

Milestones

Milestone 1 plan: April 18th, 2005 Release initial Versant Open Access - 4.0 commercial implementation of EJB 3.0 and JDO 2.0 ( JSR 220/243 ) to the open source community which includes initial Eclipse integration ( lacking integration with other Data Tool Projects ) for public review, comment and contribution.   This is a proposal phase opportunity for the community to provide feedback on the tooling and get involved.

Milestone 2 plan: August 8th, 2005 Release an Eclipse platform integrated version which is using core code components of other relevant Eclipse sub-projects including but not limited to Data Tools Project and Web Tools Project

The goal of this milestone is to provide: 

  • Forward engineering capabilities for applications using the POJO persistence approach.  This includes input source meta data driven pattern mapping which allows a target relational schema to be available to live ER diagrams for mapping to existing database schema.  It also includes auto generation of relational schema for new databases.
  • To remove the prior Swing dependency and provide a 100% SWT based implementation of the visual artifacts for the tooling implementation. 
  • The ability to enable a project for ORM configuration and a framework for associating a runtime plug-in with a project.  To show one example of how to use the framework using the Versant open source EJB runtime.  
  • A framework for the context sensitive mapping GUI to reflect the capabilities of the runtime currently associated with an enabled project. To show one example using the Versant open source EJB runtime illustrating how to use this context sensitive GUI framework. 
  • Synchronized views of mapping information ( source code editors,  mapping pattern editors, live ER editors ) where a change in any view is reflected in the others.  So, for example if someone adds an annotation to the source code the appropriate mapping possibilities automatically appear in the mapping view and the default mapping is selected and represented by a live ER diagram.   This approach is taken so that if someone does not use JDK 1.5 and does not have annotation available to them that the alternate views can still be used to provide mapping.  In addition, if a non Java developer is performing the relational mapping exercise or query execution optimization, they do not need to explicitly edit the Java source code.  This allows Java developers to use a one click mapping approach deferring database schema design to database architects.
  • An extensible framework for allowing vendors to provide customizable input output capabilities to accommodate alternative runtimes.  Use this framework to show an example of outputting meta data for the Versant open source EJB runtime.
  • Support for Oracle, MySQL and Derby databases. 
  • All of this is driven by an EMF model that vendors may extend to suit their needs.

Image 1:  The following block diagram gives an overview of the tooling approach and to integration with the Eclipse platform.

Milestone 2 use case coverage:

    • Auto generation of mapping for a domain model.
      • Project association to data source
      • Project binding to selected JSR200/243 runtime
      • Source code annotation of persistent classes
      • Source code annotation of persistent class attributes
      • Property based meta data management of persistent classes
      • Auto generation of DDL for selected data source
      • Auto generation of Tables for final DDL
      • Generation of artifacts into Eclipse project for runtime execution
    • Customization of mapping for a domain model to existing relational schema
      • Project association to data source
      • Project binding to selected JSR220/243 runtime.
      • Source code annotation of persistent classes
      • Source code annotation of persistent class attributes
      • Property based meta data management of persistent classes
      • Load database meta data into Eclipse RDB model
      • Live ER diagrams context sensitive to loaded meta data
      • Customize tables and columns to classes and attributes. 
      • Generation of artifacts into Eclipse project for runtime execution

Image 2:  The following Eclipse screen shots give an idea of the developer experience and feature set of the Milestone 2 plug-in.

Milestone 3 plan: October 2005 Release updates that include complete support for reverse engineering of existing relational schema,  EJBQL visual query builder, support for named queries, support for custom fetch group configuration. 

Milestone 3 use case coverage:

    • Reverse engineering of existing relational schema.
      • Project association to data source
      • Project binding to selected JSR200/243 runtime
      • Load database meta data into Eclipse RDB model
      • Auto generation of classes with appropriate annotations for existing relational schema 
      • Property based meta data management of persistent classes 
      • Generation of artifacts into Eclipse project for runtime execution

The above Milestones are visible and achievable. Other elements including Data Tools Project and Web Tools Project  integration and changes in the evolving JSR 220 specification are less definite. As the months progress, it is expected that these other issues will become clearer and community involvement will be better understood so that ongoing milestones can be established. It is also expected that community involvement will reprioritize deliverables and timelines of milestones